package cn.hinglo.common.ratelimit.annotation;

import cn.hinglo.common.ratelimit.config.LimitRenderType;

import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.METHOD;
import static java.lang.annotation.RetentionPolicy.RUNTIME;


/**
 * @author HingLo
 * @createTime: 2018/9/21 16:20
 * @description: 用户限流
 */
@Retention(RUNTIME)
@Target(METHOD)
public @interface EnableUserLimit {

    /**
     * 制定时间内 请求的次数
     *
     * @return 返回次数
     */
    int rate();

    /**
     * 指定的时间,单位默认为秒
     *
     * @return 返回秒
     */
    int second() default 1;

    /**
     * 被限流后给用户的反馈操作 支持：json，page,redirect,默认返回json数据
     *
     * @return 返回响应的类型
     */
    String renderType() default LimitRenderType.JSON;

    /**
     * 被限流后给客户端的响应，响应的内容根据 action 的类型来渲染
     *
     * @return 返回结果
     */
    String renderContent() default "请求频率过高,请稍后再试";
}
